#!/usr/bin/python
# -*- coding: utf-8 -*-
# @name             : 操作步骤
# @author           : OneYoung
# @create           : 2024-02-05
# @version          : v1.0
# @desc             : 页面操作步骤封装类

from application.routers import Login
from core.base_page import BasePage
from .locators import PageLocators


class PageOperate(BasePage):
    """页面操作"""
    loc = PageLocators()

    def open(self):
        """打开页面"""
        self.open_page(Login.login)

    def input_username(self, username):
        """
        输入登录用户名
        :param username: 用户名
        """
        # 先清空, 组件原因直接clear不生效，使用按键清空
        self.backspace_clear(self.loc.loc_username)
        # 再输入
        self.input_value(self.loc.loc_username, username)

    def input_password(self, password):
        """
        输入登录密码
        :param password: 用户密码
        """
        # 先清空
        self.backspace_clear(self.loc.loc_password)
        # 再输入
        self.input_value(self.loc.loc_password, password)

    def click_login_button(self):
        """点击登录按钮"""
        self.click_element(self.loc.loc_login_btn)

    def get_name_empty_text(self):
        """获取用户名为空提示信息"""
        return self.get_element_text(self.loc.loc_name_empty_text)

    def get_pwd_empty_text(self):
        """获取密码为空提示信息"""
        return self.get_element_text(self.loc.loc_pwd_empty_text)

    def login_opt(self, username, password):
        """
        登录操作
        :param username: 用户名
        :param password: 登录密码
        """
        # 1.输入用户名
        self.input_username(username)
        # 2.输入密码
        self.input_password(password)
        # 3.点击登录按钮
        self.click_login_button()

    def get_success_mark(self):
        """获取登录成功标识"""
        try:
            return self.get_element_text(self.loc.loc_success_mark)
        except ValueError:
            return ''

    def get_fail_mark(self):
        """获取登录失败标识"""
        # 检测页面仍停留在登录页面则表示登录失败
        try:
            self.wait_element_visible(self.loc.loc_fail_hint)
            return self.get_element_text(self.loc.loc_fail_hint)
        except ValueError:
            return ''

    def user_logout(self):
        """退出登录"""
        # 点击个人中心选项
        self.click_element(self.loc.loc_user_avatar)
        # 移动到退出登录选项上方并点击
        self.move_and_click_element(self.loc.loc_logout)
        # 弹窗点击确认退出
        self.click_element(self.loc.loc_logout_confirm)
